package br.edu.com1263.action;

import java.util.Collection;

import br.edu.com1263.model.Disciplina;
import br.edu.com1263.model.Horario;
import br.edu.com1263.model.Professor;
import br.edu.com1263.model.Turma;
import br.edu.com1263.negocio.DisciplinaFacade;
import br.edu.com1263.negocio.HorarioFacade;
import br.edu.com1263.negocio.ProfessorFacade;
import br.edu.com1263.negocio.TurmaFacade;

import com.opensymphony.xwork2.ActionSupport;



public class TurmaAction extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 5252632295987337819L;
	private TurmaFacade turmaFacade;
	private DisciplinaFacade disciplinaFacade;
	private ProfessorFacade professorFacade;
	private HorarioFacade horarioFacade;
	
	private String editar;
	private String remover;
	private String adicionar;
	private String consultar;
	private String menu;
	
	private String codTurma;

	private String anoPeriodo;
	private Long idTurma;
	private Long idDisciplina;
	private Long idProfessor;
	private Long idHorario;
	private Collection<Turma> turmas = null;
	private Collection<Disciplina> disciplinas = null;
	private Collection<Professor> professores = null;
	private Collection<Horario> horarios = null;
	
	public TurmaAction(TurmaFacade turmaFacade, DisciplinaFacade disciplinaFacade, ProfessorFacade professorFacade, HorarioFacade horarioFacade){
		this.turmaFacade = turmaFacade;
		this.disciplinaFacade = disciplinaFacade;
		this.professorFacade = professorFacade;
		this.horarioFacade = horarioFacade;
	}
	
	//----------------------------------------------------
	//						Acoes
	//----------------------------------------------------
	
	@Override
	public String execute() throws Exception {
		clearErrorsAndMessages();
		turmas = turmaFacade.consultarTodos();
        
        if(adicionar != null){
            adicionar = null;
            Turma turma = new Turma(codTurma, anoPeriodo);
                            
            Disciplina disciplina = disciplinaFacade.consultar(idDisciplina);           
            Professor professor = professorFacade.consultar(idProfessor);
            Horario horario = horarioFacade.consultar(idHorario);
            
            turma.setProfessor(professor);
            turma.setDisciplina(disciplina);       
            turma.setHorario(horario);
            
            turmaFacade.salvar(turma);            
            
            turmas = turmaFacade.consultarTodos();
			addActionMessage("A turma foi adicionada corretamente.");
			return "view";
        }            
        if(consultar != null){
            consultar = null;
        	if (idTurma == null)
			{
				addActionMessage("Uma turma deve ser selecionada.");
				return "view";
			}
            Turma t = turmaFacade.consultar(idTurma);
            if (t != null)
            {
            	idTurma = t.getId();
          	  	codTurma = t.getCodTurma();
          	  	anoPeriodo = t.getAnoPeriodo();
            }
			return "view";
         }            
        if(editar != null){
            editar = null;
			Turma t = turmaFacade.consultar(idTurma);
			t.setCodTurma(codTurma);
			t.setAnoPeriodo(anoPeriodo);
			t.setId(idTurma);
          
			turmaFacade.alterar(t);
			
			turmas = turmaFacade.consultarTodos();
			addActionMessage("A turma foi editada corretamente.");
			return "view";
        }  
        
        if(remover != null){
        	remover = null;
        	Turma t = turmaFacade.consultar(idTurma);
        	if(t != null){
        		turmaFacade.remover(t);
        	}
        	turmas = turmaFacade.consultarTodos();
			addActionMessage("A turma foi removida corretamente.");
			return "view";
        }
         
        if(menu != null){
    		menu = null;
    		return "menu";
    	}
        return "menu";
	}
	
	public String cadastraTurma() throws Exception {
		turmas = turmaFacade.consultarTodos();
		disciplinas = disciplinaFacade.consultarTodos();
		professores = professorFacade.consultarTodos();
		horarios = horarioFacade.consultarTodos();

		return "view";
	}
	
	
//	--------------------------------------------------
//	Gets e sets
//----------------------------------------------------
	

	public TurmaFacade getTurmaFacade() {
		return turmaFacade;
	}

	public void setTurmaFacade(TurmaFacade turmaFacade) {
		this.turmaFacade = turmaFacade;
	}

	public DisciplinaFacade getDisciplinaFacade() {
		return disciplinaFacade;
	}

	public void setDisciplinaFacade(DisciplinaFacade disciplinaFacade) {
		this.disciplinaFacade = disciplinaFacade;
	}

	public ProfessorFacade getProfessorFacade() {
		return professorFacade;
	}

	public void setProfessorFacade(ProfessorFacade professorFacade) {
		this.professorFacade = professorFacade;
	}

	public String getEditar() {
		return editar;
	}

	public void setEditar(String editar) {
		this.editar = editar;
	}

	public String getRemover() {
		return remover;
	}

	public void setRemover(String remover) {
		this.remover = remover;
	}

	public String getAdicionar() {
		return adicionar;
	}

	public void setAdicionar(String adicionar) {
		this.adicionar = adicionar;
	}

	public String getConsultar() {
		return consultar;
	}

	public void setConsultar(String consultar) {
		this.consultar = consultar;
	}

	public String getCodTurma() {
		return codTurma;
	}

	public void setCodTurma(String codTurma) {
		this.codTurma = codTurma;
	}


	public String getAnoperiodo() {
		return anoPeriodo;
	}

	public void setAnoperiodo(String anoPeriodo) {
		this.anoPeriodo = anoPeriodo;
	}

	public Long getIdDisciplina() {
		return idDisciplina;
	}

	public void setIdDisciplina(Long idDisciplina) {
		this.idDisciplina = idDisciplina;
	}

	public Long getIdProfessor() {
		return idProfessor;
	}

	public void setIdProfessor(Long idProfessor) {
		this.idProfessor = idProfessor;
	}

	public Collection<Turma> getTurmas() {
		return turmas;
	}

	public void setTurmas(Collection<Turma> turmas) {
		this.turmas = turmas;
	}

	public Collection<Disciplina> getDisciplinas() {
		return disciplinas;
	}

	public void setDisciplinas(Collection<Disciplina> disciplinas) {
		this.disciplinas = disciplinas;
	}

	public Collection<Professor> getProfessores() {
		return professores;
	}

	public void setProfessores(Collection<Professor> professores) {
		this.professores = professores;
	}

	public HorarioFacade getHorarioFacade() {
		return horarioFacade;
	}

	public void setHorarioFacade(HorarioFacade horarioFacade) {
		this.horarioFacade = horarioFacade;
	}

	public Long getIdHorario() {
		return idHorario;
	}

	public void setIdHorario(Long idHorario) {
		this.idHorario = idHorario;
	}

	public Collection<Horario> getHorarios() {
		return horarios;
	}

	public void setHorarios(Collection<Horario> horarios) {
		this.horarios = horarios;
	}

	public String getMenu() {
		return menu;
	}

	public void setMenu(String menu) {
		this.menu = menu;
	}

	public Long getIdTurma() {
		return idTurma;
	}

	public void setIdTurma(Long idTurma) {
		this.idTurma = idTurma;
	}

	public String getAnoPeriodo() {
		return anoPeriodo;
	}

	public void setAnoPeriodo(String anoPeriodo) {
		this.anoPeriodo = anoPeriodo;
	}
	
	

	
	
	
}
